<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // js中Object.is()和==以及===的区别

        // ==来说，如果两边的类型不一致，那它就会进行一次类型的强制转换再去进行比较
        console.log(1=='1');//会把字符串形式的1转换为数值类型的1，所以结果为true
        console.log(1==true);//把true转换为数值1，所以结果为true

        console.log('----------------------------');

        //  ===来说，他会先进行类型的比较，如果类型不同，则直接判为false，其余和==一样
        console.log(1==='1');
        console.log(1===true);

        console.log('----------------------------');

        // 对于NaN，无论是==还是===，都会判为false
        console.log(NaN == NaN);
        console.log(NaN === NaN);

        // 对于正负0来说，无论是==还是===，都会判为true
        console.log(+0 == -0);
        console.log(+0 === -0);

        console.log('----------------------------');

        // 可是问题来了，开发的时候，其实我们有些时候是想让两个NaN数据被判为相等的。而对于正负0，其实我们希望它们被判为不等，这就不得不提出Object.is()，它的宗旨就是，肉眼看上去值一样的，那就一样，反之就不同
        console.log(Object.is(+0,-0));//false
        console.log(Object.is(NaN,NaN));//true
    </script>
</body>
</html>